<?php
/**
* @version		1.0: view.html.php marum56
* @package		Joomla
*/

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );

jimport( 'joomla.application.component.view');

/**
 * HTML View class for the Users component
 *
 * @static
 * @package	Joomla
 * @subpackage	Obiekty
 * @since 1.0
 */
class PrzeniesieniaViewPrzeniesienia extends JView
{
	function display($tpl = null)
	{
		global $mainframe, $option;
		$db =& JFactory::getDBO();
		
		/*
		 * Zapis/odczyt stanu strony w obiekcie klasy JRegistry,
		 * który znajduje sie w tablicy sesji.
		 */
		// Filter na wybrana kolumne
		$filter_order 		= $mainframe->getUserStateFromRequest( "$option.filter_order", 'filter_order', 's.registerDate', 'cmd' );
		// Filter na sposob sortowania: rosnacy lub malejacy
		$filter_order_Dir	= $mainframe->getUserStateFromRequest( "$option.filter_order_Dir", 'filter_order_Dir', '', 'word' );
		// Filter na obiekty i spółki
		$filter_z_obiektu	= $mainframe->getUserStateFromRequest( "$option.filter_z_obiektu", 'filter_z_obiektu', '', 'string' );
		$filter_na_obiekt	= $mainframe->getUserStateFromRequest( "$option.filter_na_obiekt", 'filter_na_obiekt', '', 'string' );
		$filter_z_obiektu_sp	= $mainframe->getUserStateFromRequest( "$option.filter_z_obiektu_sp", 'filter_z_obiektu_sp', '', 'string' );
		$search			= $mainframe->getUserStateFromRequest( "$option.search", 'search', '', 'string' );
		// Oczyszczamy szukaj
		if (strpos($search, '"') !== false) {
			$search = str_replace(array('=', '<'), '', $search);
		}
		$search = JString::strtolower($search);
		
		// Limit ilosci wyswietlanych wierszy na stronie - wart. domyślne pobierane z "configuration.php"
		$limit	= $mainframe->getUserStateFromRequest( 'global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int' );
		// Limit poczatkowy tzn. od ktorego wiersza tabeli sql rozpoczynamy wyswietlanie na stronie
		$limitstart = $mainframe->getUserStateFromRequest( $option.'.limitstart', 'limitstart', 0, 'int' );

		/*
		 * Filtry sortujące
		 */
		// Zapewnienie ze filter_order ma prawidlowa wartosc.
		if (!in_array($filter_order, array('a.model', 'a.nri', 'a.nr_przeniesienia', 'a.z_obiektu', 'a.na_obiekt', 'a.zm_sp', 's.status', 's.registerDate' ))) {
			$filter_order = 's.registerDate';
		}
		// Zapewnienie ze filter_order_Dir ma prawidlowa wartosc.
		if (!in_array(strtoupper($filter_order_Dir), array('ASC', 'DESC'))) {
			$filter_order_Dir = 'DESC';
		}
		$orderby = ' ORDER BY '. $filter_order .' '. $filter_order_Dir;
		
		// Tablica selekcji WHERE w SQL 
		$where = array();
		// Tablica dołączanych tabel SQL
		$inner = array();
		
		/*
		 * Tabela z przeniesieniami
		 */
		$from = ' FROM #__przeniesienia AS a';

		/*
		 * Tabela z przeniesieniami status
		 */
		$inner[] = ' INNER JOIN #__przeniesienia_status AS s ON s.gid = a.gid';
		// Wyszukaj najmłodszych rekordów dla danego nr obiektu
		$where[] = 's.registerDate = (SELECT max(registerDate) 
		                              FROM #__przeniesienia_status
		                              WHERE gid = s.gid)';
		                              
		/*
		 * Filtrowanie
		 */
		// Filtrowanie po obiektach z których maszyny zostały przeniesione
		if ($filter_z_obiektu) $where[] = 'a.z_obiektu = LOWER( '.$db->Quote($filter_z_obiektu).' ) ';
		if ($filter_na_obiekt) $where[] = 'a.na_obiekt = LOWER( '.$db->Quote($filter_na_obiekt).' ) ';
		// Filtrowanie po spółkach z których maszyny zostały przeniesione
		if ($filter_z_obiektu_sp) $where[] = 'a.z_obiektu_sp = LOWER( '.$db->Quote($filter_z_obiektu_sp).' ) ';
		// Filtrowanie szukaj
		if (isset( $search ) && $search != '') {
			$searchEscaped = $db->Quote( '%'.$db->getEscaped( $search, true ).'%', false );
			$where[] = '(a.nri LIKE '.$searchEscaped.' OR a.nr_przeniesienia LIKE '.$searchEscaped.' OR a.model LIKE '.$searchEscaped.')';
		}
		
		$where = ( count( $where ) ? ' WHERE (' . implode( ') AND (', $where ) . ')' : '' );
		$inner = ( count( $inner ) ? implode( ' ', $inner ) : '' );
		
		/*
		 * Tabela z przeniesieniami. Gotowe zapytanie.
		 */	 
		$query = 'SELECT *'
			. $from
			. $inner
			. $where
			. ' GROUP BY a.id'
			. $orderby
		;

		//Ile rekordow do wyswietlenia.
		$db->setQuery( $query );
		$arr = $db->loadResultArray();   // Zwraca tylko jedną kolumnę i to wystarczy do obliczenia ilości wierszy
		$total = count($arr);
		jimport('joomla.html.pagination');
		$pagination = new JPagination( $total, $limitstart, $limit );
		
		// Pobierz listę rekordów do wyświetlenia.
		$db->setQuery( $query, $pagination->limitstart, $pagination->limit );
		$rows = $db->loadObjectList();
		
		// Komunikat statusu tranzakcji
		for ($i=0, $n=count( $rows ); $i < $n; $i++)
		{
			$stat =& $rows[$i]->status;
			switch ($stat) {
				case 0: $stat='<strong>Wprowadzone</strong>, nie potwierdzone'; break;
				case 1: $stat='<strong>Potwierdzone</strong>, nie zakończone'; break;	
				case 2: $stat='<strong>Zakończone</strong>'; break;
				default: break;
			}
			
		}
		
		
		/*
		 * Poniższe zapytania różnią się od głównego zapytania grupowaniem 
		 * po polu tabeli, które ma być w wyniku zapytania nie powtarzalne.
		 */	 

		 /*
		 * Lista selekt po obiektach z których maszyny zostały przeniesione
		 */
		$query = 'SELECT z_obiektu '
			. $from
			. $inner
			//. $where
			. ' GROUP BY z_obiektu'
			. ' ORDER BY z_obiektu'
		;
		 $lists['z_obiektu'] = msSelect::selekt('filter_z_obiektu', 'Wybierz obiekt przekazujący', $query, $filter_z_obiektu, true,'z_obiektu', 'z_obiektu');
		

		/*
		 * Lista selekt po obiektach do których maszyny zostały przeniesione
		 */
		$query = 'SELECT na_obiekt '
			. $from
			. $inner
			//. $where
			. ' GROUP BY na_obiekt'
			. ' ORDER BY na_obiekt'
		;
		$lists['na_obiekt'] = msSelect::selekt('filter_na_obiekt', 'Wybierz obiekt odbierający', $query, $filter_na_obiekt, true, 'na_obiekt', 'na_obiekt');

	
		/*
		 * Lista selekt po spółkach z których maszyny zostały przeniesione
		 */
		$query = 'SELECT z_obiektu_sp'
			. $from
			. $inner
			//. $where
			. ' GROUP BY z_obiektu_sp'
			. ' ORDER BY z_obiektu_sp'
		;
		 $lists['z_obiektu_sp'] = msSelect::selekt('filter_z_obiektu_sp', 'Wybierz spółkę przekazującą', $query, $filter_z_obiektu_sp, true,'z_obiektu_sp', 'z_obiektu_sp');
		 		
		 
		// table ordering
		$lists['order_Dir']	= $filter_order_Dir;
		$lists['order']		= $filter_order;

		// search filter
		$lists['search'] = $search;
		
		$this->assignRef('lists', $lists);
		$this->assignRef('items', $rows);
		$this->assignRef('pagination', $pagination);

		parent::display($tpl);
	}
}
